home *** CD-ROM | disk | FTP | other *** search
/ Borland JBuilder 6 / jbuilder6.iso / IBM VisualAge for Java Enterprise v4.0 Retail / ivj40 / setup / IDE.Cab / F77288_TreeModelAdapter.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-04-25  |  3.7 KB  |  148 lines

  1. package com.ibm.ivb.jface.plus;
  2.  
  3. import com.ibm.ivf.ui.browser.interfaces.IElement;
  4. import com.ibm.ivf.ui.browser.interfaces.IIndexedProperty;
  5. import com.ibm.ivf.ui.browser.interfaces.IProperty;
  6. import com.ibm.ivf.ui.browser.interfaces.SetPropertyVetoException;
  7. import com.ibm.ivf.ui.browser.model.IBasicProperties;
  8. import com.ibm.ivf.ui.browser.model.SimpleProperty;
  9. import java.util.Enumeration;
  10. import java.util.Vector;
  11. import javax.swing.event.TreeModelEvent;
  12. import javax.swing.event.TreeModelListener;
  13. import javax.swing.tree.TreeModel;
  14. import javax.swing.tree.TreePath;
  15.  
  16. public class TreeModelAdapter implements TreeModel, IBasicProperties {
  17.    private static final String fgIBMCopyright = "(c) Copyright IBM Corporation 1998";
  18.    protected IElement root;
  19.    protected IIndexedProperty rootProperty;
  20.    protected String childrenPropertyName;
  21.    protected Vector listeners;
  22.  
  23.    public TreeModelAdapter() {
  24.       this((IElement)null, (IProperty)null, (String)null);
  25.    }
  26.  
  27.    public TreeModelAdapter(IElement var1, IProperty var2, String var3) {
  28.       this.root = var1;
  29.       this.rootProperty = (IIndexedProperty)var2;
  30.       this.childrenPropertyName = var3;
  31.       this.listeners = new Vector();
  32.    }
  33.  
  34.    public void addTreeModelListener(TreeModelListener var1) {
  35.       this.listeners.addElement(var1);
  36.    }
  37.  
  38.    public Object getChild(Object var1, int var2) {
  39.       if (var1 != null) {
  40.          IIndexedProperty var3 = this.getProperty(var1);
  41.          if (var3 != null) {
  42.             return var3.elementAt(var2);
  43.          }
  44.       }
  45.  
  46.       return null;
  47.    }
  48.  
  49.    public int getChildCount(Object var1) {
  50.       if (var1 != null) {
  51.          IIndexedProperty var2 = this.getProperty(var1);
  52.          if (var2 != null) {
  53.             return var2.getSize();
  54.          }
  55.       }
  56.  
  57.       return 0;
  58.    }
  59.  
  60.    public int getIndexOfChild(Object var1, Object var2) {
  61.       IIndexedProperty var3 = this.getProperty(var1);
  62.       return var3 != null ? var3.indexOfElement((IElement)var2) : -1;
  63.    }
  64.  
  65.    protected IIndexedProperty getProperty(Object var1) {
  66.       if (var1 instanceof IElement && this.childrenPropertyName != null) {
  67.          IElement var2 = (IElement)var1;
  68.          return var2 == this.root ? this.rootProperty : (IIndexedProperty)var2.getProperty(this.childrenPropertyName);
  69.       } else {
  70.          return null;
  71.       }
  72.    }
  73.  
  74.    public Object getRoot() {
  75.       return this.root;
  76.    }
  77.  
  78.    public boolean isLeaf(Object var1) {
  79.       IIndexedProperty var2 = this.getProperty(var1);
  80.       if (var2 != null) {
  81.          return var2.getSize() == 0;
  82.       } else {
  83.          return true;
  84.       }
  85.    }
  86.  
  87.    public void removeTreeModelListener(TreeModelListener var1) {
  88.       this.listeners.removeElement(var1);
  89.    }
  90.  
  91.    public void treeNodeChanged(TreePath var1, Object var2) {
  92.       byte var3 = 0;
  93.       Object var4 = null;
  94.       int var5;
  95.       if (var2 != null) {
  96.          var4 = var1.getLastPathComponent();
  97.          var5 = this.getIndexOfChild(var4, var2);
  98.          if (var5 < 0) {
  99.             var5 = this.getChildCount(var4);
  100.             var3 = 2;
  101.          } else {
  102.             var3 = 1;
  103.          }
  104.       } else {
  105.          var4 = var1.getLastPathComponent();
  106.          var5 = this.getChildCount(var4);
  107.          var3 = 2;
  108.       }
  109.  
  110.       Object[] var6 = new Object[1];
  111.       int[] var7 = new int[1];
  112.       var6[0] = var2;
  113.       var7[0] = var5;
  114.       Enumeration var8 = this.listeners.elements();
  115.  
  116.       while(var8.hasMoreElements()) {
  117.          TreeModelListener var9 = (TreeModelListener)var8.nextElement();
  118.          switch (var3) {
  119.             case 0:
  120.                var9.treeNodesChanged(new TreeModelEvent(this, var1, var7, var6));
  121.                break;
  122.             case 1:
  123.                var9.treeNodesInserted(new TreeModelEvent(this, var1, var7, var6));
  124.                break;
  125.             case 2:
  126.                var9.treeStructureChanged(new TreeModelEvent(this, var1));
  127.          }
  128.       }
  129.  
  130.    }
  131.  
  132.    public void valueForPathChanged(TreePath var1, Object var2) {
  133.       Object var3 = var1.getLastPathComponent();
  134.       if (var2 != null && var3 instanceof IElement) {
  135.          IElement var4 = (IElement)var3;
  136.          if (var2 instanceof String) {
  137.             try {
  138.                var4.setProperty("name", new SimpleProperty((String)var2));
  139.                return;
  140.             } catch (SetPropertyVetoException var5) {
  141.                return;
  142.             }
  143.          }
  144.       }
  145.  
  146.    }
  147. }
  148.